Creating dynamic sets to automatically arrange dimension annotations

ABSTRACT

A computer-implemented method and system creates dynamic sets to automatically arrange dimension annotations in a CAD model. The invention method/product/data storage medium/system determines a location to place a new dimension annotation based on dimension type of the entity selected to annotate. One or more sets of existing dimension annotations are created. The existing dimension annotations in the same set together with the new dimension annotation with similar characteristics as those in the same set are sorted, and then displayed in sorted order in a view of the CAD model on the computer screen.

RELATED APPLICATION(S)

This application is a continuation of U.S. application Ser. No.12/699,661, filed Feb. 3, 2010, which claims the benefit of U.S.Provisional Application No. 61/150,701, filed on Feb. 6, 2009. Theentire teachings of the above application(s) are incorporated herein byreference.

FIELD

This application relates to Computer-Aided Design (CAD), and moreparticularly, to automatic placement of annotations or dimensionindicia.

BACKGROUND OF THE INVENTION

Computer-aided design (CAD) software allows a user to construct andmanipulate complex three-dimensional (3D) models. A number of differentmodeling techniques can be used to create a 3D model. These techniquesinclude solid modeling, wire-frame modeling, and surface modeling. Solidmodeling techniques provide for topological 3D models, where the 3Dmodel is a collection of interconnected topological entities (e.g.,vertices, edges, and faces). The topological entities have correspondingsupporting geometrical entities (e.g., points, trimmed curves, andtrimmed surfaces). The trimmed surfaces correspond to the topologicalfaces bounded by the edges. Wire-frame modeling techniques, on the otherhand, can be used to represent a model as a collection of simple 3Dlines, whereas surface modeling can be used to represent a model as acollection of exterior surfaces. CAD systems may combine these and othermodeling techniques, such as parametric modeling techniques. Parametricmodeling techniques can be used to define various parameters fordifferent features and components of a model, and to definerelationships between those features and components based onrelationships between the various parameters.

A design engineer is a typical user of a 3D CAD system. The designengineer designs physical and aesthetic aspects of 3D models, and isskilled in 3D modeling techniques. The design engineer creates parts andmay assemble the parts into a subassembly. A subassembly may alsoconsist of other subassemblies. An assembly is designed using parts andsubassemblies.

CAD systems may also support two-dimensional (2D) objects, which are 2Drepresentations of 3D objects. Two-dimensional and three-dimensionalobjects are useful during different stages of a design process.Three-dimensional representations of a model are commonly used tovisualize a model in a physical context because the designer canmanipulate the model in 3D space and can visualize the model from anyconceivable viewpoint. Two-dimensional representations of a model arecommonly used to prepare and formally document the design of a model. A2D representation of the 3D model is referred to as a 2D drawing, orsimply, a drawing. A 2D drawing contains one or more drawing views whereeach view illustrates the model in a specific orientation (e.g., top,front, or left view), or illustrates a detail or section view of themodel. In general, the 2D drawing is used to communicate the design to amanufacturing engineer so that the physical object corresponding to the2D drawing, and therefore, also corresponding to the 3D model, can bebuilt.

Formally documenting a design includes annotating a CAD model using aset of geometric dimensioning formulations thereby enabling a designengineer to communicate the configuration of a part, a subassembly, oran assembly to a manufacturing engineer. The International StandardsOrganization (ISO) and the American Society of Mechanical Engineers(ASME), among others, establish design and manufacturing standards,which are uniform practices for stating and interpreting dimensioningdata.

Annotating a 3D model or a 2D drawing that represents a 3D model in amanner that is clear, concise, and compliant to ASME, ISO, or otherdimensioning and tolerancing standards can be an arduous task. Suchannotating of 2D drawings may be one of the most tedious and timeconsuming CAD requirements, which becomes more complicated the morecomplex the CAD design.

In general, a dimension is a physical aspect or characteristic of anobject. Examples of dimensions are height, length, and angle, each whichhave an orientation and measurement value. Representation or indicationof such dimension in CAD drawings is by dimension annotations. Adimension annotation may be formed using dimension lines, text, angle ofleader, etc., all of which can be referred to as dimension indicia.

Today, a design engineer may create dimension annotations using afreeform technique. That is, the design engineer can place dimensionannotations anywhere within the drawing by moving (e.g., dragging) thedimension indicia (e.g., dimension annotation text or leader line) usinga cursor-controlled I/O device, such as a mouse. However, the designengineer should comply with a defined standard. The defined standardgoverns the offset distances of the dimension lines, on which side of anedge the dimension annotation should be placed, and the angle of aleader (if applicable). Typically in a 2D drawing that complies to apredefined standard, when a dimension is being added to a model, thereare predetermined limited logical locations the dimension indicia can beplaced. Moreover, design engineers need to select a location whereleader lines and text do not overlap. Although sometimes leader lines doneed to overlap for lack of space, the text should never overlap.Furthermore, the design engineer often has to manually lineup dimensionindicia of one dimension annotation with dimension indicia of otherdimension annotations to create a legible and aesthetically pleasingdrawing. As more dimensions are added, the area available to placesubsequent dimension annotations is reduced, especially since thedimensions already placed are fixed until the design engineer manuallychanges them.

In U.S. Pat. No. 5,999,186 by Geoff Jackson and assigned to 3-Design LLCof Jackson, Miss., Jackson describes a CAD system with improved meansfor defining, representing, and modifying dimensions of an object. Theuser specifies dimension entities that describe components of the entireCAD object. For each dimension entity, the user enters a referenceorigin having a direction, in addition to normal dimension information.Each dimension entity has a dimension line, a leader line of thedimension line, the text that conveys the value of the dimension line,and coordinate data indicating where the dimension information should beplaced. Jackson groups related dimension entities and forms chains ofdimension entities based on reference origin. Chained dimension entitiesand their associated objects are quickly and uniformly modified by asingle user command using a parametric dimensioning technique thatsequentially recalculates coordinate data of dimension entities in aselected chain (e.g., one having a modified dimension). A drawback ofJackson is the added dimension information that a user is required toinput for each drawing entity (e.g., lines, shapes, etc.) of the CADobject.

Some commercially available CAD systems aid in the placement ofdimension annotations/indicia. A technique for aiding in the placementof dimension indicia is described by Kurt Phillip Chase, Cummings Jones,and Valerie Taylor in U.S. Pat. No. 6,232,985 assigned to Autodesk, Inc.of San Rafael, Calif. Chase et al describe how the design engineerindicates the position of the dimension line using a mouse or akeyboard, for example. Thus, Chase et al teaches that user interventionis typically employed to locate the dimension indicia (e.g., dimensionline).

In U.S. Pat. No. 7,039,569 to Richard Haws and Robert Nicolucci, Haws etal describe a dynamic dimensioning CAD program in which dimensionannotations (indicia) are automatically (system) generated andassociated with the subject object as the user draws the object.Thereafter, the dimension annotations are adaptive. For example, thesystem automatically updates the dimension annotations in response tothe user changing length of the object and vice versa (i.e., if the userchanges the dimension annotation, the system updates the objectdimension). The system automatically trims or extends dimensionannotations in response to a change in size or position of theassociated target object. Positions of dimension annotations for aprevious object are automatically shifted to accommodate a newly enteredobject. Disadvantageously, the user must enter dimension text, dimensionlines, and relative positions of objects, as well as specifyinterposition dimensions or segment lengths in the dimensionannotations.

Thus, drawbacks of current state of the art systems include thenecessity of moving a cursor (e.g., via a cursor-control I/O device) toa desired location in order to place a dimension annotation or dimensionindicia, the need to manually rearrange existing dimension indicia toaccommodate a new dimension annotation, and not offering a designengineer choices of logical locations to place a dimension annotation.Additionally, dimensioning a small area of a complex drawing may requirealternating between zooming into a drawing view, picking entities,zooming out of the drawing view, and placing the dimension indicia,which is also a tedious process. A system or method that addresses theseand other drawbacks would greatly enhance current state-of-the-artcomputerized systems by allowing dimension annotations to be placed morequickly and in a more efficient manner.

SUMMARY OF THE INVENTION

An example embodiment of the present invention may be implemented in theform of a method or corresponding product, data storage medium, orapparatus for dynamically arranging dimension indicia for acomputer-aided design (CAD) model, and include, given a CAD modelrepresenting a real-world object:

determining at least one location for placement of a new dimensionannotation on a computer screen based on a proximity characteristic, adimension type of the new dimension, and/or an orientation of the newdimension, wherein the new dimension annotation is instructive ofconstructing the real-world object, and wherein the determiningincludes:

creating one or more sets of existing dimension annotations, whereinexisting dimension annotations of any one or combination of a proximityrange, a same dimension type, and a same orientation belong to a sameset; and

sorting the existing dimension annotations in the same set and the newdimension annotation having any one or combination of the proximityrange, the same dimension type, and the same orientation as the existingdimension annotations in the same set; and

rendering the existing dimension annotations in the same set and the newdimension annotation on the computer screen in an arrangement, whereinthe rendered arrangement of the existing dimension annotations in thesame set and the new dimension annotation corresponds to an orderresulting from the sorting.

Furthermore, embodiments may include a user-interface object (e.g., awidget) displayed on the computer screen. The user-interface objectcomprises a number of divisions, each division designating a respectiveone of the locations determined for placement of the new dimensionannotation. The user-interface object may be displayed with one divisionin an active state and the rendered arrangement corresponds to the onedivision that is active.

BRIEF DESCRIPTION OF THE DRAWINGS

The details of one or more embodiments of the invention are set forth inthe accompanying drawings and the description that follows. Otherfeatures, objects, and advantages of the invention will be apparent fromthe description and drawings, and from the claims.

FIG. 1 is an illustration of a computer-generated model and a featuremanager portion of a user interface displayed in a window in oneembodiment of the present invention.

FIGS. 2A-2E are illustrations of a 2D drawing of the computer-generatedmodel in FIG. 1, and a user interface displayed in a window in oneembodiment of the present invention.

FIG. 3A-3E are illustrations of probable placements of dimensionannotations in one embodiment of the present invention.

FIG. 4 is a flow diagram illustrating a process of one embodiment of thepresent invention.

FIG. 5 is a flow diagram illustrating a process of one embodiment of thepresent invention.

FIG. 6 is a flow diagram illustrating a process of one embodiment of thepresent invention.

FIG. 7 is a schematic diagram of a computer system in which embodimentsof the present invention are implemented.

The foregoing will be apparent from the following more particulardescription of example embodiments of the invention, as illustrated inthe accompanying drawings in which like reference characters refer tothe same parts throughout the different views. The drawings are notnecessarily to scale, emphasis instead being placed upon illustratingembodiments of the present invention.

DETAILED DESCRIPTION OF THE INVENTION

A description of example embodiments of the invention follows.

The present invention provides for automatic arrangement of dimensionannotations in a 2D CAD drawing. By automatically arranging dimensionannotations, the present invention reduces the time required to placedimension annotations in a desired location and reduces the need tomanually rectify positions of pre-existing dimension annotations toplace a new dimension annotation. The present invention arrangesdimension annotations corresponding to linear, angular, radial, anddiameter dimensions, and other dimensions with minimum hand movementrequired to select a location for the dimension annotation.

Referring now to FIG. 1, a window 102 displayed on a computer monitor isshown. The window 102 is generated by modeling software executed by acomputerized modeling system, an example of which is later shown withreference to FIG. 7. The window 102 is a conventional computer-generatedwindow that can be programmed by one of ordinary skill in the art usingconventional, commercially available, software programming tools, suchas those available from Microsoft Corporation of Redmond, Wash.

A computer-generated 3D model 104 is displayed within a modeling portion106 of the window 102. The surfaces of the 3D model 104 can bedisplayed, or the 3D model 104 can be displayed using solid lines anddashed lines to show visible edges and hidden edges, respectively, ofthe 3D model 104. Implementations also may include other window areas,such as a FeatureManager® window panel 108 in which the structure of apart, a subassembly, an assembly, or a drawing is listed to help theuser (e.g., a design engineer) visualize and manipulate the 3D model104, as well as components of the 3D model 104.

Typically, a design engineer uses a mouse (cursor-control) device toselect features and parts of a CAD model, as well as to indicate alocation for a dimension annotation (or dimension indicia). The locationcorresponding to the mouse in the modeling portion 106 of the window 102may be indicated by a pointer (cursor).

Referring to FIG. 2A, a drawing view 202 of the 3D model 104 of FIG. 1is shown in a 2D drawing 204. The drawing view 202 has dimensionannotations 206, 208 corresponding to existing horizontal dimensions.When inserting an additional horizontal dimension annotation, the designengineer may decide to locate the additional dimension annotation aboveor below the object being annotated 200. Locating the additionalannotation below the object 200 may require dimension annotation 206 tobe shifted upward (depending on the compliance with a uniform practicerequiring a specific offset from the annotated entity) and/or dimensionannotation 208 to be shifted downward to accommodate the additionalhorizontal dimension annotation, as shown in FIG. 2B, which illustratesadditional horizontal dimension annotation 210 between existingdimension annotations 206, 208.

In FIG. 2B, a circle 212 is selected and a preview of the additionalhorizontal dimension annotation 210 indicating the distance between edge214 and the center of circle 212 is displayed. A graphical userinterface (UI) widget 216 (hereinafter referred to as the previewwidget) is displayed behind the cursor 218 to assist the design engineerin placing the additional dimension annotation 210. The preview widget216 in FIG. 2B-2E is divided into two halves. When the cursor 218 hoversover a lower half of the preview widget 216, a preview of the additionaldimension annotation 210 appears below the object being annotated 200,as shown in FIG. 2B; whereas, when the cursor 218 hovers over an upperhalf of the preview widget 216, a preview of the additional dimensionannotation 210 appears above the object being annotated 200, as shown inFIG. 2C. The preview widget 216 relieves the design engineer fromexcessive hand motion while placing the dimension annotation in thedrawing view 202 because clicking a cursor-control I/O device buttonautomatically designates a location above or below the object beingannotated 200 in the drawing view 202, where the location corresponds tothe highlighted (shown as shaded) half of the preview widget 216 pointedto by cursor 218. The existence and design of the preview widget 216enables the design engineer to quickly toggle between and select one oftwo possible locations to place the additional dimension annotation 210with minimal movement of the cursor 218 and thus minimal movement of thecursor control I/O device and hand of the user.

The present invention determines probable locations where the designengineer may want to place a dimension annotation, and the previewwidget 216 reflects the probable locations. For example, as shown inFIGS. 2D and 2E, after horizontal edges 220, 222 are selected, thepreview widget 216 has a left and a right half because the probablelocations to place a vertical dimension annotation 224 corresponding toand annotating the parallel horizontal edges 220, 222 are to the leftand right of the object being annotated 200 in the drawing view 202.When the cursor 218 hovers over the right half of the preview widget 216as illustrated in FIG. 2D, a preview of the vertical dimensionannotation 224 appears to the right of the object being annotated 200.When the cursor 218 hovers over the left half of the preview widget 216,the preview of the vertical dimension annotation 224 appears to the leftof the object being annotated as illustrated in FIG. 2E.

Illustrated in FIGS. 3A-3D are probable dimension annotation locationsof a hole 300 (represented by concentric circles) in the object beingannotated 200. In this case, the preview widget 216 has four quadrantsand appears beneath (behind) the cursor 218 allowing the design engineerto quickly toggle between and select one of four possible locations toplace a diameter dimension annotation 302 with minimal movement of thecursor 218, cursor control I/O device, and user's hand. FIGS. 3A-3D showpreviews of diameter dimension annotation 302 in the upper right, upperleft, lower left, and lower right, respectively. Each preview locationin FIGS. 3A-3D corresponds to the quadrant of preview widget 216 towhich the cursor 218 is pointing, and which is shaded. The existence andthe design of the preview widget 216 has the benefit of alleviating thedesign engineer from excessive hand motion to place the dimensionannotation because the design engineer only needs to move the cursor 218from one preview widget 216 quadrant to another, then click a mousebutton (or similarly indicate using another I/O device) to designate alocation to place the diameter dimension annotation 302 in the 2Ddrawing 204 location.

Referring now to FIG. 3E, an additional diameter dimension annotation304 is shown. The additional diameter dimension annotation 304 has beenplaced using the same method as described with respect to FIGS. 3A-3D.That is, in FIG. 3E, the upper right quadrant of the preview widget 216was selected to place the additional diameter dimension annotation 304in the upper right quadrant of the area relative to and outside the hole300. The additional diameter dimension annotation 304 is placed in thesame quadrant as existing diameter dimension annotation 302. The presentinvention calculates an offset to place the additional diameterdimension annotation 304 relative to existing diameter dimensionannotation 302 (e.g., additional diameter dimensions may be located 15°in the clockwise or counterclockwise direction of existing diameterdimension annotation 302).

When additional dimensions are added, no matter what type, the presentinvention analyzes the available space for the corresponding newdimension annotation and all existing dimension annotations to determinethe placement of all the dimension annotations. For example, a seconddiameter dimension annotation may be offset 15°. If a third diameterdimension annotation is added to the upper right quadrant outside thehole 300 in FIG. 3E, the number of dimension annotations added to thatquadrant are spaced within the quadrant to ensure that the dimensionannotations are legible. In one embodiment, each addition radial ordiameter dimension annotation may be added at an offset specified as auser-defined or system-defined amount (e.g., 15°) from the existingdimension annotation in the upper right quadrant relative to the hole300, or the upper right quadrant relative to the hole 300 may be dividedinto three to determine placement of the three diameter dimensionannotations.

To help ensure that the text of a dimension annotation and the dimensionlines (including leader and witness lines) do not overlap, a collisiondetection process is applied. The collision detection process may checkfor overlapping text and dimension lines (including witness lines, whichmay also be referred to as extension lines). Although, a dimension linemay overlap, the text may not. Rather than shifting text further awayfrom the annotated object, in one embodiment the text is staggered toavoid any overlap. Those skilled in the art understand how to implementcollision detection procedures, which are also commercially available.By way of non-limiting example, simple rectangular bounding boxes orcomplex hulls surrounding the text may be compared to detect collision.

Referring now to FIG. 4, a computer processor module or procedure 400 ofone embodiment of the present invention is shown. Procedure 400automatically arranges dimension annotations/indicia and provides auser-friendly means by which a location for a dimension annotation maybe chosen. To begin, one or more drawing entities is selected by thedesign engineer (step 410). By way of non-limiting example, the entitymay be a point, a line, a circle, an arc, or a combination thereof. Inthe next step, a specific dimension type and orientation is inferred(step 420). For example, after a design engineer picks two non-parallellines, an angular dimension type may be inferred. A selection of avertical edge or a selection of two parallel horizontal edges may causethe inference of a vertical linear dimension type; whereas, if a circleis selected, a radial or diameter dimension type having a correspondingdimension annotation oriented in a quadrant outside the circle may beinferred. The SolidWorks® 2009 software product, developed by DassaultSystémes SolidWorks Corporation of Concord, Mass., includesfunctionality that infers dimension types, including linear, angular,radial, and diameter dimensions types.

Procedure 400 at step 430 next calculates one or more probable locationsof the dimension annotation corresponding to the inferred dimension typeof step 420. Step 430 is discussed in more detail with reference to FIG.5. After the probable locations are calculated, procedure 400 displays apreview of the dimension annotation in a probable location (step 440)and displays a preview widget (step 450) to control the display of othercalculated probable locations for the dimension annotation. The previewwidget indicates which location the probable dimension annotation isdisplayed by highlighting (e.g., shading) a portion of the widget, byway of non-limiting example. In the final step of procedure 400, apreview is selected in response to a user operation of the previewwidget to designate the location of a dimension annotation, or thedimension annotation may be placed manually (step 460).

Referring now to FIG. 5, a procedure 500 illustrates steps forcalculating the probable locations of dimension annotations (step 430 inFIG. 4). To begin, one or more dynamic sets of existing dimensionannotations are created (step 510). In one embodiment, the number ofdynamic sets depends on the possible orientation options for thedimension annotation. To create the dynamic sets, all existing dimensionannotations are analyzed and those corresponding to the same type ofdimension (e.g., linear or radial), having the same orientation (e.g.,vertical, horizontal, or within a same quadrant), within a specifiedproximity of a selected entity (e.g., annotating the same drawing view),with a potential of interfering with the new dimension (e.g., determinedby a simple collision detection technique), or a combination thereof,become members of the same dynamic dimension set. The specifiedproximity may be user-defined or system-defined. Furthermore, thespecified proximity may be limited to only the current drawing view(e.g. a front, a left, a top, or a detail view) in the 2D drawing, orthe current drawing view and those drawing views bordering the drawingview being annotated.

In embodiments, a dynamic dimension set may also consist of dimensionannotations of different types. For example, one dynamic set may consistof all existing vertical dimension annotations to the left of an objectbeing annotated and all existing radial dimension annotations placed inthe two left quadrants of the drawing view in which the object beingannotated is displayed.

Continuing with FIG. 5, in the next step, a new dimension annotation iscreated in an optimal location based on the corresponding dimension typeand orientation of the selected entity or entities (step 520). By way ofnon-limiting example, a dimension annotation of a horizontal edgegenerally has two optimal locations, one above the edge and one belowthe edge; whereas, a dimension annotation of a circle may have fouroptimal locations, one in each quadrant and outside the circle. For adimension between two parallel horizontal lines, optimal dimensionannotations may be to the left and to the right of the two parallelhorizontal lines. Furthermore, a dimension annotation for an edge at anangle to another entity may have six logical locations.

A most optimal location may be determined as well. For non-limitingexample, the selected entity could be compared to the center of adisplayed object. Optimal location will then be on the same side of theobject as the selected entity, relative to the center.

Empirical techniques may be applied to find optimal locations inaddition to the traditionally logical locations. Furthermore, aparticular design engineer may have preferred placement preferences,which the present invention may ascertain by analyzing the existinglocations of dimension annotations. For example, one embodiment mayanalyze the position of text in a series of dimension annotations,determine that the text is always staggered, then ensure that apreviewed dimension annotation does indeed stagger the dimension text.An embodiment may also determine that annotations are always placedoutside drawing view borders or that annotations are within the drawingview borders, and thus, calculate annotation locations according to thatpractice. Moreover, not only are locations of dimension annotationscalculated factoring in the location of the selected entity and otherdimension annotations, the entire model shape is also considered whencalculating probable locations to ensure that the annotation dimensionsdo not overlap any model geometry.

Procedure 500 continues at step 530 by adding the new dimensionannotation in an optimal location to an appropriate dynamic set,referred to later as the currently active dynamic set. By way ofnon-limiting example, a new vertical dimension annotation having anoptimal location on the left of the object being annotated will become amember of the dynamic set containing all vertical dimension annotationsto the left of the object being annotated. In the next step, for eachdynamic set (or at least for the currently active and the prior activedynamic sets), all members in the set are sorted based on size and type(step 540). Sorting aids in the placement of the dimension annotationsbecause the order in which the dimension annotations will be arranged inthe 2D drawing corresponds to the order in which the respectivedimension annotation is stored in the dynamic set. In an embodiment, thedimension annotation of the largest linear dimension will be placed thefurthest away from the object being annotated, and therefore the largestlinear dimension annotation is ordered last in an ordered set of lineardimension annotations. Furthermore, each dimension annotation whendisplayed is offset from a consecutively ordered dimension annotation inthe same dynamic set by a pre-defined or user-defined amount. Afterprocedure 500 ends, the dimension annotations in at least the currentlyactive dynamic set and possibly a prior active dynamic set are updated.The new dimension annotation appears in the optimal location orderedaccordingly with the other dimension annotations in the correspondingdynamic set.

In other embodiments, a procedure similar to procedure 500 is employedto adjust dimension annotations in a drawing or other screen view.Adjustment of dimension annotations includes adding dimensionannotations, deleting dimension annotations, or both. When a dimensionannotation is deleted, procedure 500 is applied to the remainingdimension annotations and determines candidate locations andarrangements (probable, optimal, etc.) of the remaining dimensionannotations for the given drawing or view.

Referring now to FIG. 6, procedure 600 illustrates the user-interactiveselection of a location to place the dimension annotation (step 460 inFIG. 4). When procedure 600 begins, a preview of a probable placementposition calculated by procedure 500 and a preview widget 216 are shown(steps 440, 450 in FIG. 4). In one embodiment, a portion of the previewwidget 216 is highlighted to visually indicate the location of thepreviewed dimension annotation (as shown in FIGS. 2B-2E and 3A-3E).Other visual cues are suitable.

If the highlighted region of the preview widget 216 is selected (step610) by the user, procedure 600 places the new dimension annotation inthe preview location (step 620). Alternatively, procedure 600 tracks thecursor 218 movement to another portion of the preview widget 216 (step630) and responsively displays an alternate dimension annotation preview(step 640). The highlighted area of the preview widget 216 may then beuser selected (step 610) to place the new dimension annotation in thepreview location (step 620), or the cursor 218 on user command/controlmay move to another area of the preview widget 216 (step 630) fordisplay of another alternate dimension annotation preview (step 640),and so on. To show an alternate preview based on the cursor 218 location(step 640), a probable location of the dimension annotation iscalculated, as described with reference to procedure 500.

The design engineer may also explicitly place the dimension annotationwherever desired by simply moving the cursor 218 outside of the previewwidget boundary (step 650). In one embodiment, moving the cursor 218outside the preview widget boundary temporarily disables the previewwidget 216 (step 660), thereby allowing the design engineer to manuallyplace the dimension annotation (step 670) in the drawing or screen view.Furthermore, in an embodiment, the design engineer can re-enable thepreview widget 216 by moving the cursor 218 back over the disabledpreview widget (not shown in FIG. 6).

In other embodiments, the different computer-generated screen viewsinclude three-dimensional representations of a subject object,two-dimensional representations of a subject object and the like. Theinvention CAD system and method determines one or more candidatelocations in the screen view for providing dimension annotations. Eachcandidate location is user-selectable. In addition for ease of use, theinvention provides a user interface tool or widget that enablesefficient (e.g., one click or cursor hover) user preview of thedifferent candidate locations and ultimately user selection of one ofthe candidate locations. Efficiency and ease in user movements tooperate the widget to produce the previews of different candidatelocations include hovering the cursor over different portions of thewidget that correspond respectively to the different candidatelocations. The different portions of the widget are visually indicated(or graphically defined) by geometry, shading, coloring and the like.Preferably, for each widget portion, location of the portion relative tothe whole widget (e.g., upper portion, lower portion, rightmost,leftmost) is indicative of respective corresponding candidate locationin the screen view (above the object representation, below the objectrepresentation, to the right of, to the left of, respectively). Userselection of a preview is thus easily achieved by the user hovering thecursor near the portion of the widget corresponding to the candidatelocation desired for view. User selection of a candidate location (anddimension annotation) is similarly an easy user operation (point thecursor to the corresponding widget portion and click on/operate the I/Odevice to select).

In this way, the present invention widget/user interface and systemprovides increased user-movement efficiency (e.g., low number of steps,quicker operation process, etc.) in generating dimension annotations,previewing different candidate locations of dimension annotations, andselecting a desired one of the candidate locations/dimensionannotations.

In one embodiment, a data structure for a dimension annotation iscreated once and one or more parameters are modified in the datastructure to create alternative previews. For example, a dimension datastructure may have parameters that specify a dimension annotationlocation, a dimension type (e.g., linear or radial), and an orientation(e.g., vertical or horizontal). An embodiment may also pre-define anangle of a leader for a radial or a diameter dimension annotation. Forexample, the leader line angle may be 45°, 135°, 225°, or 315°. To showalternative previews, only the parameter that specifies locationcoordinates may need to be modified according to the result of thesorting step 540 in FIG. 5 and an offset amount. In some cases, aparameter specifying orientation may also need to be modified, by way ofnon-limiting example, from vertical to horizontal.

Referring now to FIG. 7, a computerized modeling system 700 is shown andincludes a CPU 702, a computer monitor 704, a keyboard input device 706,a mouse input device 708, and a storage device 710. The CPU 702,computer monitor 704, keyboard 706, mouse 708, and storage device 710can include commonly available computer hardware devices. For example,the CPU 702 can include a Pentium-based processor. The mouse 708 mayhave conventional left and right buttons that the user may press toissue a command to a software program being executed by the CPU 702. Asan alternative or in addition to the mouse 708, the computerizedmodeling system 700 can include a pointing device such as a trackball,touch-sensitive pad, or pointing device and buttons built into thekeyboard 706. Those of ordinary skill in the art appreciate that thesame results described herein with reference to a mouse device can beachieved using another available pointing device. Other appropriatecomputer hardware platforms are suitable as will become apparent fromthe discussion that follows. Such computer hardware platforms arepreferably capable of operating the Microsoft® Windows® 2000, WindowsXP, Windows Vista®, Windows 7, UNIX®, Linux, or Mac OS® operatingsystems.

Additional computer processing units and hardware devices (e.g., graphicaccelerator processors, rapid prototyping, video, and printer devices)may be included in the computerized modeling system 700. Furthermore,the computerized modeling system 700 may include network hardware andsoftware thereby enabling wired or wireless communication to a hardwareplatform 712, and facilitating communication between numerous computersystems that may include a CPU and a storage system, among othercomputer components.

Computer-aided drafting and modeling software may be stored on thestorage device 710 and loaded into and executed by the CPU 702. Thedrafting and modeling software allows a user to create and modify a 2Ddrawing and a 3D model, and implements aspects of the inventiondescribed herein. The CPU 702 uses the computer monitor 704 to display a3D model and other aspects thereof as described. Using the keyboard 706and the mouse 708, the user can enter and modify data associated withthe 2D drawing and/or 3D model. The CPU 702 accepts and processes inputfrom the keyboard 706 and mouse 708. The CPU 702 processes the inputalong with the data associated with the 2D drawing and/or 3D model andmakes corresponding and appropriate changes to that which is displayedon the computer monitor 704 as commanded by the drafting or modelingsoftware. In one embodiment, the software is based on a solid modelingsystem that may be used to construct a 3D model consisting of one ormore solid and surface bodies.

The invention may be implemented in digital electronic circuitry, or incomputer hardware, firmware, software, or in combinations thereof.Apparatus of the invention may be implemented in a computer programproduct tangibly embodied in a machine-readable storage device forexecution by a programmable processor; and method steps of the inventionmay be performed by a programmable processor executing a program ofinstructions to perform functions of the invention by operating on inputdata and generating output. The invention may advantageously beimplemented in one or more computer programs that are executable on aprogrammable system including at least one programmable processorcoupled to receive data and instructions from, and to transmit data andinstructions to, a data storage system, at least one input device, andat least one output device. Each computer program may be implemented ina high-level procedural or object-oriented programming language, or inassembly or machine language if desired; in any case, the language maybe a compiled or interpreted language. Suitable processors include, byway of non-limiting example, both general and special purposemicroprocessors. Generally, a processor will receive instructions anddata from a read-only memory and/or a random access memory. Storagedevices suitable for tangibly embodying computer program instructionsand data include all forms of non-volatile memory, including by way ofexample semiconductor memory devices, such as EPROM, EEPROM, and flashmemory devices; magnetic disks such as internal hard disks and removabledisks; magneto-optical disks; and CD-ROM disks. Any of the foregoing maybe supplemented by, or incorporated in, custom-designed ASICs(application-specific integrated circuits).

Dynamically arranging dimension lines in the manner described hereinrealizes time-saving advantages afforded by presenting to the designengineer one or more probable locations of a new dimension annotationand enabling the design engineer to quickly select a location for thenew dimension annotation (with minimal hand motion). Moreover, existingdimension annotations may also be automatically re-arranged in real timeto accommodate the new dimension annotation by shifting locations as anew dimension annotation is previewed in one or more locations, by wayof non-limiting example. Using the present invention, a design engineercan interact more rapidly while annotating a complex model, and therebyincrease his productivity. Other advantages include being able to remainzoomed into a portion of a complex drawing to annotate small entitieswithout having to go back and forth between zooming in and out of thedrawing to accomplish the task.

A number of embodiments of the present invention have been described.Nevertheless, it will be understood that various modifications may bemade without departing from the spirit and scope of the invention. Forexample, implementations may change the order in which operations areperformed. Furthermore, depending on the needs of an implementation,particular operations described herein may be implemented as a combinedoperation, eliminated, added to, or otherwise rearranged. By way ofnon-limiting example, one embodiment may eliminate step 530 in FIG. 5because the present invention does not necessitate that the newdimension annotation be added to a dynamic set for the new dimensionannotation to be sorted with the members of the dynamic set.

While this invention has been particularly shown and described withreferences to example embodiments thereof, it will be understood bythose skilled in the art that various changes in form and details may bemade therein without departing from the scope of the inventionencompassed by the appended claims. For example, those skilled in theart will know how to implement the systems and methods described hereinto annotate 3D models, add other annotations such as tolerances,rearrange annotations after an annotation is deleted, and providemultiple location options for an annotation relative to one specificdynamic set (e.g., more than one probable location with a quadrant for adiameter dimension annotation).

What is claimed is:
 1. A computer-implemented method for automaticallyplacing a new dimension annotation of a computer-aided design modelrepresenting a real-world object, the method comprising: having acomputer-aided design model displayed on a computer screen in a mannersupporting user interaction with the computer-aided design model, thecomputer aided design model being formed of one or more model entitiesand having associated with at least one of the one or more modelentities one or more currently existing dimension annotations; in aprocessor, in response to user input annotating a model entity of saidmodel by adding a new dimension annotation to the computer-aided designmodel, automatically determining at least one location for placement ofthe new dimension annotation on the computer screen based on dimensiontype of the model entity being annotated, wherein the new dimensionannotation is an additional dimension annotation relative to thecurrently existing dimension annotations in the computer-aided designmodel, and the new dimension annotation corresponds to a dimension ofthe model entity such that the new dimension annotation is instructiveof constructing the real-world object, and wherein the determining isfree of user intervention and includes determining arrangement andprobable locations of the new dimension annotation together with thecurrently existing dimension annotations by: (i) creating one or moredynamic sets of the currently existing dimension annotations, whereincurrently existing dimension annotations of any one or combination of asimilar proximity range, a same dimension type, and a same orientationbelong to a same dynamic set; and (ii) sorting the currently existingdimension annotations in the same set and the new dimension annotationhaving any one or combination of the similar proximity range, the samedimension type, and the same orientation as the currently existingdimension annotations in the same dynamic set; and (iii) forming anarrangement of the currently existing dimension annotations in the samedynamic set and the new dimension annotation according to an orderresulting from the sorting; and rendering on the computer screen one ormore user-selectable screen displays of the currently existing dimensionannotations and the new dimension annotation in the formed arrangementand at the determined probable locations.
 2. The computer-implementedmethod of claim 1, further comprising: displaying a user-interfacewidget on the computer screen, the user-interface widget comprised of anumber of divisions, each division designating a respective one of theprobable locations determined for placement of the new dimensionannotation.
 3. The computer-implemented method of claim 2, wherein theuser-interface widget is displayed with one division in an active state,and the rendered arrangement corresponds to the one division that isactive.
 4. The computer-implemented method of claim 1 where the step ofsorting is based on at least a size of the entity being dimensioned. 5.The computer implemented method of claim 4 wherein the sorting based onsize results in a dimension annotation having a largest linear dimensionbeing last in the order in the same set; and the rendered arrangementplaces the largest linear dimension annotation furthest away from thecomputer-aided design model on the computer screen.
 6. Thecomputer-implemented method of claim 1 wherein the step of determiningincludes determining optimal location for placement of the new dimensionannotation.
 7. The computer-implemented method of claim 1 wherein thestep of determining at least one location for placement of the newdimension annotation employs collision detection.
 8. Thecomputer-implemented method of claim 1 wherein the step of determiningincludes staggering respective text of dimension annotations to avoidoverlap.
 9. A non-transitory computer readable medium embodying acomputer program product, and executed by a computer for automaticplacement of dimension annotations of a computer-aided design (CAD)model, comprising: a computer-readable data storage medium havinginstructions embedded thereon and configured to cause a computer to:automatically determine at least one location for placement of a newdimension annotation on a computer screen based on a dimension type of amodel entity in the CAD model, and the model entity being selected to beannotated, wherein the new dimension annotation is an additionaldimension annotation with respect to currently existing dimensionannotations in the CAD model, and the new dimension annotationcorresponds to a dimension of the model entity such that the newdimension annotation is instructive of construction of a real-worldobject, and wherein the determining being free of user intervention andbeing by: creating one or more sets of the currently existing dimensionannotations, wherein currently existing dimension annotations of any oneor combination of a similar proximity characteristic, a same dimensiontype, and a same orientation belong to a same set; and sorting thecurrently existing dimension annotations in the same set and the newdimension annotation having any one or combination of the similarproximity characteristic, the same dimension type and the sameorientation as the currently existing dimension annotations in the sameset; and display an arrangement of the currently existing dimensionannotations in the same set and the new dimension annotation on thecomputer screen, wherein the displayed arrangement of the currentlyexisting dimension annotations in the same set and the new dimensionannotation corresponds to an order resulting from the sorting.
 10. Anon-transitory computer-readable data storage medium comprising:non-volatile memory storing instructions for operatively instructing adigital processor to automatically adjust an arrangement of currentlyexisting dimension annotations of a computer-aided design modelrepresenting a real-world object, the memory programmably causing saiddigital processor to: receive from a user input device input to adjustthe arrangement, wherein the input specifies one of adding a certaindimension annotation to the arrangement and deleting one of thecurrently existing dimension annotations from the arrangement; createone or more sets of the currently existing dimension annotations,wherein currently existing dimension annotations of any one orcombination of a similar proximity, a same dimension type, and a sameorientation belong to a same set; sort the currently existing dimensionannotations in the same set resulting in one or more probable locationsfor placement of dimension annotations in the arrangement when adjustedeither without the deleted one of the currently existing dimensionannotations or with the certain dimension annotation added, and if theinput specifies adding the certain dimension annotation to thearrangement and the certain dimension annotation has any one orcombination of the similar proximity, the same dimension type, and thesame orientation as the currently existing dimension annotations in thesame set, then said sorting sorts the certain dimension annotation alongwith the currently existing dimension annotations in the same set; andautomatically adjust the arrangement of the dimension annotations freeof user intervention and render the adjusted arrangement in auser-selectable manner on a computer screen by employing an orderingresulting from the sorting, wherein: the ordering including the certaindimension annotation in the adjusted arrangement if the input specifiesadding the certain dimension annotation, wherein a location of thecertain dimension annotation in the adjusted arrangement corresponds tothe ordering resulting from the sort; and the ordering excluding the oneof the currently existing dimension annotations from the adjustedarrangement if the input specifies deleting said one of the currentlyexisting dimension annotations from the arrangement.
 11. The datastorage medium as claimed in claim 10 further comprising instructions todisplay a user-interface widget on the computer screen, theuser-interface widget comprised of a number of divisions, each divisiondesignating a respective one of the probable locations for placement ofdimension annotations in the adjusted arrangement.
 12. The data storagemedium as claimed in claim 11 wherein the widget is displayed with onedivision in an active state, and the rendered adjusted arrangementcorresponds to the one division that is active.
 13. The data storagemedium as claimed in claim 10 where the sort step is based on at least asize of a model entity being dimensioned.
 14. The data storage medium asclaimed in claim 10 wherein the input specifies adding the certaindimension annotation, and the create step and sort step includedetermining optimal location for placement of the certain dimensionannotation.
 15. The data storage medium as claimed in claim 10 furthercomprising instructions to stagger respective text of dimensionannotations in the adjusted arrangement.
 16. A computer apparatus forautomatically adjusting an arrangement of dimension annotations of acomputer-aided design (CAD) model, comprising: a computer modulereceiving input to adjust the arrangement, wherein the input specifiesone of adding a certain dimension annotation to the arrangement anddeleting one dimension annotation from the arrangement, wherein thedimension annotations of said arrangement are pre-existing dimensionannotations of the CAD model relative to a time of receiving the inputand if the input specifies adding the certain dimension annotation tothe arrangement the certain dimension annotation exists thereafter; andin response to the input, the computer module: creates one or more setsof the pre-existing dimension annotations, wherein pre-existingdimension annotations of any one or combination of a similar proximityrange to the CAD model, a same dimension type, and a same orientationbelong to a same set; sorts the pre-existing dimension annotations inthe same set resulting in one or more probable locations for placementof dimension annotations in the arrangement when adjusted either withoutthe one dimension annotation or with the certain dimension annotationadded, and if the input specifies adding the certain dimensionannotation to the arrangement and the certain dimension annotation hasany one or combination of the similar proximity range, the samedimension type, and the same orientation as the pre-existing dimensionannotations in the same set, then said sorting sorts the certaindimension annotation along with the pre-existing dimension annotationsin the same set; and automatically adjusts the arrangement of thedimension annotations free of user intervention and rendering theadjusted arrangement in a user-selectable manner on a computer screen byemploying an ordering resulting from the sorting, wherein: the orderingincluding the certain dimension annotation in the adjusted arrangementif the input specifies adding the certain dimension annotation, whereina location of the certain dimension annotation in the adjustedarrangement corresponds to the ordering resulting from the sorting; andthe ordering excluding the one dimension annotation from the adjustedarrangement if the input specifies deleting the one dimension annotationfrom the arrangement.
 17. The computer apparatus as claimed in claim 16further comprising: a widget displayed in a user interface on thecomputer screen, the widget being formed of a number of divisions, eachdivision representing a respective one of the probable locations forplacement of the dimension annotations, the widget enabling userselection of the adjusted arrangement; and through the differentdivisions, the widget further enables viewing of different ones of theprobable locations for placement of the dimension annotations.
 18. Thecomputer apparatus as claimed in claim 17 wherein the widget isdisplayed with one division in an active state, and the renderedadjusted arrangement corresponds to the one division that is active. 19.The computer apparatus as claimed in claim 16 wherein the computermodule sort is based on dimension size.
 20. The computer apparatus asclaimed in claim 16 wherein the computer module further staggersrespective text of dimension annotations in the adjusted arrangement.